#include <stdio.h>

#define MaxSize 50
typedef int ElemType_Tree;

// 定义一个线性表
typedef struct {
    ElemType_Tree data[MaxSize];
    int len;
}SqList;

// 遍历打印顺序表中的元素
void SqListPrint(SqList &L) {
//    printf("顺序表的长度为%d, 遍历其中的元素: \n", L.len);
    for (int i = 0; i < L.len; ++i) {
        printf("%3d", L.data[i]);   // %3d 每个元素占3个空格
    }
    printf("\n");
}

// 顺序表插入操作
bool SqListInsert(SqList &L, int pos, ElemType_Tree e) {
    // 判断插入位置是否合法
    if (pos < 1 || pos > L.len) {
        return false;
    }
    // 插入操作
    for (int i = L.len; i >= pos; --i) {
        L.data[i] = L.data[i-1];
    }
    L.data[pos-1] = e;
    L.len++;
    return true;
}

// 顺序表删除操作
bool SqListDelete(SqList &L, int pos) {
    // 判断删除位置是否合法
    if (pos < 1 || pos > L.len) {
        return false;
    }
    // 删除操作
    ElemType_Tree e_del = L.data[pos - 1]; // 记录删除的元素值
    for (int i = pos - 1; i < L.len; ++i) {
        L.data[i] = L.data[i+1];
    }
    L.len--;
    return true;
}

/**
 * 初始化顺序表（顺序表中元素为整型），里边的元素是1,2,3，
 * 然后通过scanf读取一个元素（假如插入的是6），插入到第2个位置，打印输出顺序表，每个元素占3个空格，格式为1  6  2  3，
 * 然后scanf读取一个整型数，是删除的位置（假如输入为1），然后输出顺序表  6  2  3，
 * 假如输入的位置不合法，输出false字符串。
 *
 * 提醒，Language一定要选为C++。
 * @return
 */
int main() {
    // 初始化要求的顺序表
    SqList L;
    L.data[0] = 1;
    L.data[1] = 2;
    L.data[2] = 3;
    L.len = 3;          // 总计三个元素
//    SqListPrint(L);

    // 输入一个数，并指定插入的位置
    int e, pos;
//    scanf("%d%d", &e, &pos);
    scanf("%d", &e);
    pos = 2;
    if (SqListInsert(L, pos, e)) {
        SqListPrint(L);
    } else {
        printf("false\n");
    }

    // 输入需要删除的元素的位置
    scanf("%d", &pos);
    if (SqListDelete(L, pos)) {
        SqListPrint(L);
    } else {
        printf("false\n");
    }

    return 0;
}